The corresponding class bodies of the derived counters implement only the new or the redeclared methods:

type up_down_counter is class body
  for signal, variable
    procedure count_down is
    begin
      -- use of inherited
      -- method "load"
      load (value - 1);
    end;
  end for;
end class body up_down_counter;

type address_counter is class body
  for signal, variable
    procedure count_up is
    begin
      load (value + 4);
    end;
  end for;
(*)
end class body address_counter;


Because the redeclaration of the method count_up only hides the inherited method count_up of the parent class counter, an additional method count_up_2 may look like this:

(*)
procedure count_up_2 is
begin
  for i in 0 to 3 loop
    -- invocation of hidden
    -- count_up method.
    counter.count_up;
  end loop;
end count_up;

In this example the statement counter.count_up; uses a qualified notation to get access to the hidden method count_up of class counter. The next page will explain this more explicitly.